#ifndef BASE__SUB_ELEMENT_H
#define BASE__SUB_ELEMENT_H

#include <string>
#include <iostream>

#include "doctype_definition.h"

//forward declaration for the containsElement method and to avoid circular dependency
class Element;

class BaseSubElement {
	
public:
	BaseSubElement();
	virtual ~BaseSubElement();
	bool containsElement(Element & e);
	virtual std::string generateRegex(DoctypeDefinition* dtd) = 0;
	
	virtual void print(std::ostream& out) = 0;
protected:

};

#endif //BASE__SUB_ELEMENT_H
